﻿using System.Collections.Generic;
using AccesoData;
using Entidades;
using NUnit.Framework;

namespace Pruebas.PruebasDao
{
    [TestFixture]
    class PruebaDaoSucursal
    {
        private Aseguradora _prueba = ObtenerAsguradoraPrueba();
        private Lugar _lugar = ObtenerLugarPrueba();


        private static Aseguradora ObtenerAsguradoraPrueba()
        {
            Aseguradora miAseguradora = FabricaEntidades.ObtenerAseguradora();
            miAseguradora.Nombre = "pruebaSucursal";
            miAseguradora.LetraRif = 'V';
            miAseguradora.Telefono = 02125767289.ToString();
            miAseguradora.Rif = 54234123;
            miAseguradora.Id = DAO.ObtenerFabrica(1).ObtenerDaoAseguradora().AgregarAseguradora(miAseguradora);
            return miAseguradora;
        }

        private static Lugar ObtenerLugarPrueba()
        {
            Lugar miLugar = FabricaEntidades.ObtenerLugar();
            miLugar.Nombre = "EstadoPrueba";
            miLugar.Tipo = "Estado";

            miLugar.Id = DAO.ObtenerFabrica(1).ObtenerDaoLugar().AgregarLugar(miLugar);
            return miLugar;
        }

        [TestCase]
        public void PruebaAgregarSucursal()
        {
            Sucursal miSucursal = FabricaEntidades.ObtenerSucursal();
            miSucursal.IdAseguradora = _prueba.Id;
            miSucursal.Direccion.Id = _lugar.Id;
            miSucursal.Telefono1 = 526321.ToString();
            miSucursal.Telefono2 = 231312.ToString();
            miSucursal.Tipo = "principal";

            miSucursal.Id = DAO.ObtenerFabrica(1).ObtenerDaoSucursal().AgregarSucursal(miSucursal);

            Assert.AreNotEqual(-1, miSucursal.Id);

        }

        [TestCase]
        public void PruebaObtenerSucursales()
        {
            List<Sucursal> prueba = new List<Sucursal>();
            List<Sucursal> miSucursales = new List<Sucursal>();
            Sucursal sucursal1 = FabricaEntidades.ObtenerSucursal();
            Sucursal sucursal2 = FabricaEntidades.ObtenerSucursal();
            
            sucursal1.IdAseguradora = _prueba.Id;
            sucursal1.Direccion.Id = _lugar.Id;
            sucursal1.Telefono1 = 526321.ToString();
            sucursal1.Telefono2 = 231312.ToString();
            sucursal1.Tipo = "principal";
            sucursal1.Id = DAO.ObtenerFabrica(1).ObtenerDaoSucursal().AgregarSucursal(sucursal1);

            sucursal2.IdAseguradora = _prueba.Id;
            sucursal2.Direccion.Id = _lugar.Id;
            sucursal2.Telefono1 = 526322.ToString();
            sucursal2.Telefono2 = 231313.ToString();
            sucursal2.Tipo = "secundario";
            sucursal2.Id = DAO.ObtenerFabrica(1).ObtenerDaoSucursal().AgregarSucursal(sucursal2);

            miSucursales.Add(sucursal1);
            miSucursales.Add(sucursal2);

            prueba = DAO.ObtenerFabrica(1).ObtenerDaoSucursal().ObtenerSucursales(_prueba.Id);

            Assert.IsNotEmpty(prueba);
            Assert.AreEqual(prueba.Count, miSucursales.Count);
            Assert.AreEqual(prueba[0].Id, miSucursales[0].Id);
            Assert.AreEqual(prueba[1].Id,miSucursales[1].Id);

        }
    }
}
